//package com.app.lxx.pregnancyberth.utils;
//
//import android.content.Context;
//import android.os.CountDownTimer;
//import android.util.Log;
//import android.view.View;
//
//import com.app.lxx.pregnancyberth.easyphone.EasyLinphone;
//import com.app.lxx.pregnancyberth.easyphone.callback.PhoneCallback;
//import com.app.lxx.pregnancyberth.easyphone.callback.RegistrationCallback;
//import com.app.lxx.pregnancyberth.service.ButtonService;
//import com.app.lxx.pregnancyberth.service.DataBus;
//import com.app.lxx.pregnancyberth.widge.ChineseToSpeech;
//
//import org.linphone.core.LinphoneCall;
//
//public class PhoneManager {
//    private static RegistrationCallback mRegistrationCallback;
//    private static Context mContext;
//    private static ChineseToSpeech chineseToSpeech;
//
//    public static void init(Context context) {
//        listenButton();
//        mContext = context;
//        chineseToSpeech = new ChineseToSpeech(context);
//        PhoneCallback phoneCallback = new PhoneCallback() {
//            @Override
//            public void incomingCall(LinphoneCall linphoneCall) {
//                // 来电状态
//                super.incomingCall(linphoneCall);
//                EasyLinphone.toggleSpeaker(true);
//                targetidText.setText("来电中...");
//                inComingCall = true;
//                speechText("护士端呼叫...");
//                mCallIn.setVisibility(View.VISIBLE);
//                mHangUp.setVisibility(View.VISIBLE);
//                user_input_view.setVisibility(View.GONE);
//                calling_view.setVisibility(View.VISIBLE);
//                if (controlView.getVisibility() == View.VISIBLE) {
//                    controlView.setVisibility(View.GONE);
//                    root_view.setVisibility(View.VISIBLE);
//                }
//                isCallPhone = true;
////                isAnswer = true;
//                isBusy = false;
//                startLoadCallLogTimer();
//                //点亮屏幕
//                view_front_black.setVisibility(View.GONE);
//                setDelayTimeToScreen();
//            }
//
//            @Override
//            public void outgoingInit(LinphoneCall linphoneCall) {
//                // 呼叫初始化
//                super.outgoingInit(linphoneCall);
////                    chineseToSpeech.speech("正在呼叫...");
//                inComingCall = false;
//                targetidText.setText("呼叫中...");
//                speechText("正在呼叫...");
//                mHangUp.setVisibility(View.VISIBLE);
//                user_input_view.setVisibility(View.GONE);
//                calling_view.setVisibility(View.VISIBLE);
//                if (controlView.getVisibility() == View.VISIBLE) {
//                    controlView.setVisibility(View.GONE);
//                    root_view.setVisibility(View.VISIBLE);
//                }
//
//                isCallPhone = true;
////                isAnswer = false;
//                isBusy = true;
//                view_front_black.setVisibility(View.GONE);
//                setDelayTimeToScreen();
//            }
//
//            @Override
//            public void callConnected(LinphoneCall linphoneCall) {
//                // 电话接通
//                super.callConnected(linphoneCall);
//                inComingCall = false;
//                // 视频通话默认免提，语音通话默认非免提
//                EasyLinphone.toggleSpeaker(EasyLinphone.getVideoEnabled());
//                // 所有通话默认非静音
//                EasyLinphone.toggleMicro(false);
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleSpeaker.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.VISIBLE);
//                targetidText.setText("通话中...");
//                speechText("已接通...");
//                user_input_view.setVisibility(View.GONE);
//                calling_view.setVisibility(View.VISIBLE);
//                isBusy = true;
//                isCallPhone = true;
//            }
//
//            @Override
//            public void paused(LinphoneCall linphoneCall) {
//                super.paused(linphoneCall);
//                inComingCall = false;
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleSpeaker.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.VISIBLE);
//                targetidText.setText("暂停通话...");
//                speechText("暂停通话...");
//                user_input_view.setVisibility(View.GONE);
//                calling_view.setVisibility(View.VISIBLE);
//                isBusy = true;
//                isCallPhone = true;
//            }
//
//            @Override
//            public void Resuming(LinphoneCall linphoneCall) {
//                super.Resuming(linphoneCall);
//                inComingCall = false;
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleSpeaker.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.VISIBLE);
//                targetidText.setText("通话中...");
//                speechText("恢复通话...");
//                user_input_view.setVisibility(View.GONE);
//                calling_view.setVisibility(View.VISIBLE);
//                isBusy = true;
//                isCallPhone = true;
//            }
//
//            @Override
//            public void callEnd(LinphoneCall linphoneCall) {
//                // 电话挂断
//                super.callEnd(linphoneCall);
//                inComingCall = false;
//                speechText("结束通话...");
////                if (isAnswer) {
////                } else {
////                    speechText("取消呼叫...");
////                }
//
//                user_input_view.setVisibility(View.VISIBLE);
//                calling_view.setVisibility(View.GONE);
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.INVISIBLE);
//                mToggleSpeaker.setVisibility(View.INVISIBLE);
//                targetidText.setText("结束通话...");
//                Log.e("linphone", "callEnd" + linphoneCall);
//                isBusy = false;
//                isCallPhone = false;
//            }
//
//            @Override
//            public void error() {
//                super.error();
//                speechText("通话异常,请重试...");
//                user_input_view.setVisibility(View.VISIBLE);
//                calling_view.setVisibility(View.GONE);
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.INVISIBLE);
//                mToggleSpeaker.setVisibility(View.INVISIBLE);
//                targetidText.setText("异常结束...");
//                Log.e("linphone", "error");
//                isBusy = false;
//                isCallPhone = false;
//            }
//
//            @Override
//            public void callReleased(LinphoneCall linphoneCall) {
//                super.callReleased(linphoneCall);
//                // 电话挂断
//                super.callEnd(linphoneCall);
//                if (isBusy) {
//                    speechText("结束通话...");
//                }
//                user_input_view.setVisibility(View.VISIBLE);
//                calling_view.setVisibility(View.GONE);
//                mCallIn.setVisibility(View.GONE);
//                mHangUp.setVisibility(View.VISIBLE);
//                mToggleMute.setVisibility(View.INVISIBLE);
//                mToggleSpeaker.setVisibility(View.INVISIBLE);
//                targetidText.setText("结束通话...");
//                Log.e("linphone", "callEnd" + linphoneCall);
//                isBusy = false;
//                isCallPhone = false;
//            }
//        };
//
//        /**
//         * 系统信息
//         */
//        EasyLinphone.addCallback(new RegistrationCallback() {
//            @Override
//            public void registrationOk() {
//                super.registrationOk();
//                if (mRegistrationCallback != null) {
//                    mRegistrationCallback.registrationOk();
//                }
//            }
//
//            @Override
//            public void registrationFailed() {
//                if (mRegistrationCallback != null) {
//                    mRegistrationCallback.registrationFailed();
//                }
//            }
//
//            @Override
//            public void registrationProgress() {
//                super.registrationProgress();
//                if (mRegistrationCallback != null) {
//                    mRegistrationCallback.registrationProgress();
//                }
//            }
//
//            @Override
//            public void registrationNone() {
//                super.registrationNone();
//                if (mRegistrationCallback != null) {
//                    mRegistrationCallback.registrationNone();
//                }
//            }
//
//            @Override
//            public void registrationCleared() {
//                super.registrationCleared();
//                if (mRegistrationCallback != null) {
//                    mRegistrationCallback.registrationCleared();
//                }
//            }
//        }, phoneCallback);
//    }
//
//    private static void listenButton() {
//        //按钮监听
//        try {
//            ButtonService.startWork();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        DataBus.subscribe("callButton", new DataBus.Subscriber() {
//            @Override
//            protected void onReceive(DataBus.Message msg) {
//                try {
//                    if (msg.what == 1) {
//                        Log.e("sssssButtonService", "sssssButtonService CallPhoneIntent");
//                        Log.e("sssssButtonService", String.format("isCallPhone:%s,isBusy:%s,isAnswer:%s", isCallPhone, isBusy, "isAnswer"));
//                        if (System.currentTimeMillis() - firstPressedTime > 5000) {
//                            if (isCallPhone) {
//                                if (isBusy) {
//                                    // 挂断
//                                    user_input_view.setVisibility(View.VISIBLE);
//                                    calling_view.setVisibility(View.GONE);
//                                    hangUp();
//                                    isCallPhone = false;
//                                    isBusy = false;
//                                } else {
//                                    // 接听
//                                    mCallIn.setVisibility(View.GONE);
//                                    calling_view.setVisibility(View.VISIBLE);
//                                    acceptCall();
//                                    isBusy = true;
//                                }
//                            } else {
//                                try {
//                                    audioCall(phoneNumber);
//                                } catch (Exception e) {
//                                    e.printStackTrace();
//                                    showToast(e.getMessage());
//                                }
//                            }
//                        } else {
//                            firstPressedTime = System.currentTimeMillis();
//                        }
//                        view_front_black.setVisibility(View.GONE);
//                        setDelayTimeToScreen();
//                    }
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//        });
//    }
//
//    public static void login(String account, String password, String serverIP, RegistrationCallback callback) {
//        mRegistrationCallback = callback;
//        EasyLinphone.setAccount(account, password, serverIP + ":" + "5060");
//        EasyLinphone.login();
//    }
//
//    String lastText = "";
//    long lastTime = 0;
//    CountDownTimer mSpeechTextTimer;
//
//    private void speechText(String text) {
//        Log.e("speechText", "speechText:" + text);
//        long time = System.currentTimeMillis();
//        if (isBusy || (lastText.equals(text) && time - lastTime < 1000 * 5)) {//通话中 或者间隔不到5秒 或者重复播音  都忽略
//            Log.e("speechText", "---ignore speechText:" + text);
//            return;
//        }
//        lastTime = time;
//        lastText = text;
//        chineseToSpeech.speech(text);
//        if (inComingCall) {
//            lastText = "";
//            lastTime = 0;
//            isBusy = false;
//            if (mSpeechTextTimer != null) {
//                mSpeechTextTimer.cancel();
//            }
//            mSpeechTextTimer = new CountDownTimer(10 * 1000, 1000) {
//                @Override
//                public void onTick(long millisUntilFinished) {
//
//                }
//
//                @Override
//                public void onFinish() {
//                    if (inComingCall) {
//                        speechText("护士端呼叫...");
//                    }
//                }
//            }.start();
//        }
//    }
//}
